package Java.Lock;

import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils;

import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListSet;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CopyOnWriteArraySet;

//list集合线程不安全
public class ThreadList {

    public static void main(String[] args) {

        //arrayList异常情况和解决方案
        //创建Arraylist集合
//        List<String> list=new ArrayList<>();
        //vector解决
//        List<String>  list=new Vector<>();
        //collections工具类解决
//        List<String> list= Collections.synchronizedList(new ArrayList<>());

        // CopyOnWriteArrayList解决
//        List<String> list= new CopyOnWriteArrayList<>();
//        for(int i=0;i<10;i++){
//            new Thread(()->{
//                //向集合添加内容
//                list.add(UUID.randomUUID().toString().substring(0,8));
//                //从集合获取内容
//                System.out.println(list);
//            },String.valueOf(i)).start();
//        }


        //hashset线程安全问题及解决方案
//        Set<String> set= new HashSet<>();

        //CopyOnWriteArraySet解决异常情况,set集合不能有重复元素
//        Set<String> set= new CopyOnWriteArraySet<>();
//        for(int i=0;i<10;i++){
//            new Thread(()->{
//                //向集合添加内容
//                set.add(UUID.randomUUID().toString().substring(0,8));
//                //从集合获取内容
//                System.out.println(set);
//            },String.valueOf(i)).start();
//        }


        //hashmap
//        Map<String,String> map= new HashMap<>();
        //hahmap异常处理ConcurrentHashMap
        Map<String, String> map = new ConcurrentHashMap<>();

        for (int i = 0; i < 10; i++) {

            String key = String.valueOf(i);
            new Thread(() -> {
                //向集合添加内容
                map.put(key, UUID.randomUUID().toString().substring(0, 8));
                //从集合获取内容
                System.out.println(map);
            }, String.valueOf(i)).start();
        }


    }
}
